﻿// 4582. Yih的线段树.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
https://www.acwing.com/problem/content/4585/

Yih 刚学完线段树，还非常陌生，因此他想分析一些线段树的性质。

他构造一棵线段树时使用的是下面的代码：

void build(int x, int l, int r) {
    vis[x] = 1;
    if(l == r) return;
    int mid = (l + r) >> 1;
    build(x << 1, l, mid);
    build(x << 1 | 1, mid + 1, r);
}
可以看出，在执行完 build 后，如果节点 x
 被创建了，就有 vis[x]=1，否则 vis[x]=0。

对于一个数 x
，若存在一个 n
，执行完 build(1,1,n) 后，x
 是所有满足 vis[y]=1 的 y
 中最大的一个（也就是说，执行完 build(1,1,n) 后，节点 x
 被创建，且在所有被创建节点中，节点 x
 的节点编号最大），则称 x
 是一个 Yuzu 数。

例如，当 n=2
 时，执行 build(1,1,2) 会创建 3
 个节点，分别是节点 1,2,3
，其中节点 3
 的节点编号值最大，所以 3
 是一个 Yuzu 数。

Yih 想让你帮忙探索 Yuzu 数的性质，他会给你 Q
 个正整数 xi
，并请你判断每个 xi
 是否为 Yuzu 数。

输入格式
第一行包含一个正整数 Q
。

接下来有 Q
 行，其中第 i
 行为一个正整数 xi
。

输出格式
共 Q
 行，对于第 i
 行，若 xi
 是 Yuzu 数，则输出 Y，否则输出 N。

数据范围
前三个测试点满足 1≤Q≤3
，1≤xi≤10
。
所有测试点满足 1≤Q≤105
，1≤xi≤109
。

输入样例
4
1
2
3
9
输出样例
Y
N
Y
Y
样例解释
build(1,1,1) 只创建节点 1
，因此 1
 是 Yuzu 数。

build(1,1,2) 创建节点 1
、2
、3
，因此 3
 是 Yuzu 数，而 n
 大于等于 2
 时，build(1,1,n) 创建的节点中编号最大值都大于 2
，因此不存在 n
，使得 2
 是 build(1,1,n) 创建的节点中编号最大值，所以 2
 不是 Yuzu 数。

build(1,1,5) 的具体实现流程图如下所示，可以看出 9
 是 Yuzu 数。


*/
#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
}

 